有Transaction就有可能會發生Deadlock. 在RDS上發生的時候就可從LOG裡看出發生的來源與時間.
假設有兩個Transaction都對同一個做更新. 但是更新的順序有交叉.
一個Transaction先更新ID=2的內容, 再更新ID=1的內容.
另一個Transaction則是先更新ID=1的內容, 再更新ID=2的內容. 同時執行這兩個Transactions就會發生死結.
一旦發生在地端的SQL, 可從[Management] -> [SQL Server Logs]來查看原因. 但是在AWS上由於沒有權限, 因此無法從這裡的LOG查看.
這要回到AWS的面板上, [Databases] -> [Logs & events] -> [Download] 選取並下載Logs.
再使用SSMS打開LOG, 就可以看到Deadlock發生的細節.
在Transaction內, 將更新內容的順序改為一致, 就可避免發生Deadlock.